package com.cskaoyan.controller;

import com.cskaoyan.bean.BaseRespVo;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;

/**
 * 文件上传
 * @author stone
 * @date 2021/12/31 11:11
 */
@RestController
@RequestMapping("upload")
public class UploadController {

    // 类型使用MultipartFile，形参名要和请求参数名一致
    @RequestMapping("file")
    public BaseRespVo uploadFile(MultipartFile file) throws IOException {

        //保存在指定位置
        // transferTo方法的形参提供的就是保存的位置以及名字
        //如果这个destFile已经存在，会覆盖 → 解决这个问题，就是new一个不存在的file
        // → 使用一个不会重复的文件名 UUID

        //也可以做这样一件事：上传的时候是啥名字，就以啥名字来接收
        String originalFilename = file.getOriginalFilename();//获得原始文件名
        String name = file.getName();                        //获得是请求参数名 → 这里是file，也就是形参名
        String contentType = file.getContentType();          //正文类型 → 文件类型
        long size = file.getSize();                          //文件大小
        //InputStream inputStream = file.getInputStream();     //输入流

        File destFile = new File("D:\\tmp", originalFilename);
        file.transferTo(destFile);
        return BaseRespVo.ok();
    }

    //上传多个文件
    @RequestMapping("files")
    public BaseRespVo uploadFile(MultipartFile[] files) throws IOException {
        //可以通过遍历的方式保存起来
        for (MultipartFile file : files) {
            String originalFilename = file.getOriginalFilename();
            File destFile = new File("D:\\tmp", originalFilename);
            file.transferTo(destFile);
        }
        return BaseRespVo.ok();
    }
}
